782f45034c334279774d7e93fb7f23feb5253200,app/src/main/java/be/digitalia/fosdem/db/DatabaseManager.java,DatabaseManager,getSearchSuggestionResults,#String#number#,609
Before Change
final String matchQuery = query + "*";
String[] selectionArgs = new String[]{matchQuery, "%" + query + "%", matchQuery, String.valueOf(limit)};
// Query is similar to getSearchResults but returns different columns, does not join the Day table or the Bookmark table and limits the result set.
Cursor cursor = helper.getReadableDatabase().rawQuery(
"SELECT e.id AS " + BaseColumns._ID
+ ", et.title AS " + SearchManager.SUGGEST_COLUMN_TEXT_1
+ ", IFNULL(GROUP_CONCAT(p.name, ', '), '') || ' - ' || t.name AS " + SearchManager.SUGGEST_COLUMN_TEXT_2
+ ", e.id AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA
+ " FROM " + DatabaseHelper.EVENTS_TABLE_NAME + " e"
+ " JOIN " + DatabaseHelper.EVENTS_TITLES_TABLE_NAME + " et ON e.id = et.rowid"
+ " JOIN " + DatabaseHelper.TRACKS_TABLE_NAME + " t ON e.track_id = t.id"
+ " LEFT JOIN " + DatabaseHelper.EVENTS_PERSONS_TABLE_NAME + " ep ON e.id = ep.event_id"
+ " LEFT JOIN " + DatabaseHelper.PERSONS_TABLE_NAME + " p ON ep.person_id = p.rowid"
+ " WHERE e.id IN ( "
+ "SELECT rowid"
+ " FROM " + DatabaseHelper.EVENTS_TITLES_TABLE_NAME
+ " WHERE " + DatabaseHelper.EVENTS_TITLES_TABLE_NAME + " MATCH ?"
+ " UNION "
+ "SELECT e.id"
+ " FROM " + DatabaseHelper.EVENTS_TABLE_NAME + " e"
+ " JOIN " + DatabaseHelper.TRACKS_TABLE_NAME + " t ON e.track_id = t.id"
+ " WHERE t.name LIKE ?"
+ " UNION "
+ "SELECT ep.event_id"
+ " FROM " + DatabaseHelper.EVENTS_PERSONS_TABLE_NAME + " ep"
+ " JOIN " + DatabaseHelper.PERSONS_TABLE_NAME + " p ON ep.person_id = p.rowid"
+ " WHERE p.name MATCH ?"
+ " )"
+ " GROUP BY e.id"
+ " ORDER BY e.start_time ASC LIMIT ?", selectionArgs);
return cursor;
}
public static Event toEvent(Cursor cursor, Event event) {
After Change
final String matchQuery = query + "*";
String[] selectionArgs = new String[]{matchQuery, "%" + query + "%", matchQuery, String.valueOf(limit)};
// Query is similar to getSearchResults but returns different columns, does not join the Day table or the Bookmark table and limits the result set.
return helper.getReadableDatabase().rawQuery(
"SELECT e.id AS " + BaseColumns._ID
+ ", et.title AS " + SearchManager.SUGGEST_COLUMN_TEXT_1
+ ", IFNULL(GROUP_CONCAT(p.name, ', '), '') || ' - ' || t.name AS " + SearchManager.SUGGEST_COLUMN_TEXT_2
+ ", e.id AS " + SearchManager.SUGGEST_COLUMN_INTENT_DATA
+ " FROM " + DatabaseHelper.EVENTS_TABLE_NAME + " e"
+ " JOIN " + DatabaseHelper.EVENTS_TITLES_TABLE_NAME + " et ON e.id = et.rowid"
+ " JOIN " + DatabaseHelper.TRACKS_TABLE_NAME + " t ON e.track_id = t.id"
+ " LEFT JOIN " + DatabaseHelper.EVENTS_PERSONS_TABLE_NAME + " ep ON e.id = ep.event_id"
+ " LEFT JOIN " + DatabaseHelper.PERSONS_TABLE_NAME + " p ON ep.person_id = p.rowid"
+ " WHERE e.id IN ( "
+ "SELECT rowid"
+ " FROM " + DatabaseHelper.EVENTS_TITLES_TABLE_NAME
+ " WHERE " + DatabaseHelper.EVENTS_TITLES_TABLE_NAME + " MATCH ?"
+ " UNION "
+ "SELECT e.id"
+ " FROM " + DatabaseHelper.EVENTS_TABLE_NAME + " e"
+ " JOIN " + DatabaseHelper.TRACKS_TABLE_NAME + " t ON e.track_id = t.id"
+ " WHERE t.name LIKE ?"
+ " UNION "
+ "SELECT ep.event_id"
+ " FROM " + DatabaseHelper.EVENTS_PERSONS_TABLE_NAME + " ep"
+ " JOIN " + DatabaseHelper.PERSONS_TABLE_NAME + " p ON ep.person_id = p.rowid"
+ " WHERE p.name MATCH ?"
+ " )"
+ " GROUP BY e.id"
+ " ORDER BY e.start_time ASC LIMIT ?", selectionArgs);
}
public static Event toEvent(Cursor cursor, Event event) {